home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / graphics / mand54a.zip / MANDEL.DOC < prev    next >
Text File  |  1995-09-01  |  33KB  |  682 lines

  1.                                Mandelbrot/Julia
  2.                                  Set Generator
  3.                         Operating and Reference Manual
  4.                              Shareware Version 5.4
  5.  
  6.                                  Installation
  7.  
  8.     The Mandelbrot/Julia Set Generator program requires an IBM compatible 
  9. computer with at least 512K of memory, a VGA display and a Microsoft 
  10. compatible mouse. The installation process is quite easy. (Users obtaining 
  11. .ZIP files from the Internet or a BBS can skip this installation process.)
  12.  
  13.     First, make a backup copy of your Mandelbrot/Julia Set Generator program 
  14. disk. If necessary, consult your PC-DOS/MS-DOS manual for a description of the 
  15. Diskcopy command. Save the original program disk in a safe place and use the 
  16. copy as the working program disk. 
  17.  
  18.     Second, while it is possible to use the Mandelbrot/Julia Set Generator on 
  19. a floppy disk system, a hard disk system is a necessity if you wish to store a 
  20. number of image files. To install the Mandelbrot/Julia Set Generator on a hard 
  21. disk use the following steps: 
  22.  
  23.     1. Insert the floppy disk in your computer in drive A. (or B if necessary) 
  24.     2. Type A: (or B:)
  25.     3. Type INSTALL A C
  26.  
  27.     Any hard drive letters can be used, for example INSTALL B D will install 
  28. the program from floppy drive B to hard drive D. The installation will create 
  29. a directory called MAND5 on your hard drive and you will need to enter a 
  30. CD\MAND5 to change to the Mandelbrot/Julia Set Generator directory before 
  31. running the program. Once installed just type MAN to start the program. All 
  32. the files for Mandelbrot/Julia Set Generator need to be in the same directory 
  33. for the program to operate successfully. 
  34.  
  35.                       Quick Start for Impatient New Users 
  36.  
  37.     Type MAN to start the program. After the mouse cursor appears click it on 
  38. the Load Image button at the left. When the window appears with the list of 
  39. image file names, simply clicking on one of them will display the image using 
  40. the current color mask. If the image file contains a specific color mask 
  41. filename it will be automatically loaded prior to displaying the image. Most 
  42. commands can be interrupted by a simple mouse click. 
  43.  
  44.     The zoom window feature is started by double clicking on the displayed 
  45. image. Once the zoom window appears, with its crossed center lines, it can be 
  46. moved by holding down the left mouse button, while the cursor is inside the 
  47. zoom window, and positioning the window. The zoom window size can be increased 
  48. or reduced by holding down the left mouse button and moving the mouse cursor 
  49. horizontally while it is outside the zoom window. Once correctly positioned 
  50. the mouse cursor should be clicked on the right gray panel, which will store 
  51. the changed dimensions. The zoom window can be abandoned by clicking the mouse 
  52. cursor on the left gray panel. Be careful not to drag the mouse cursor onto 
  53. the gray panels while resizing. The Set Values button should be clicked on 
  54. next, and the image file name changed. If this is not done the original image 
  55. file will be erased. Clicking on the Make Image button will start the 
  56. generation of the new zoomed image. 
  57.  
  58.                     The Command Buttons and Their Function 
  59.  
  60.     Set Values
  61.  
  62.     The Set Values command allows the user to set the initial parameters that 
  63. will be used by the Mandelbrot/Julia Set Generator to begin generating a new 
  64. image. These values are also available for inspection when an image has been 
  65. displayed. The values and their range are: 
  66.  
  67.     Item                             Range
  68. -----------------------------------------------------
  69.     X center value                   -10 to 10
  70.     Y center value                   -10 to 10
  71.     Magnification                    >0
  72.     A value (if a Julia image)       -10 to 10
  73.     B value (if a Julia image)       -10 to 10
  74.     Dwell                            1 to 8191
  75.     Image width in pixels            10 to 4800
  76.     Image type [M J]                 M or J
  77.     Full/Partial image [F P]         F or P
  78.     Default color mask file          xxxxxxxx.MSK
  79.     Display type [0 1]               For future use
  80.     256 color palette number         For future use
  81.     Image file name                  xxxxxxxx.MAN 
  82.                                      or xxxxxxxx.MAR 
  83.  
  84.     To change a value simply click inside the rectangle where the value is 
  85. displayed and then key in a new value or file name. File name extensions must 
  86. be .MSK for color masks, .MAN for regular images and .MAR for those that are 
  87. recursive. 
  88.  
  89.     The A and B values are only displayed with Julia images. If the recursive 
  90. image generator is used the image width must be a member of the 2^n set, ie. 
  91. 16, 32, 64, 128 etc. The program maintains the Full/Partial image status and 
  92. these values cannot be changed by the user. 
  93.  
  94.     Color Masks 
  95.  
  96.     When the Color Masks command is chosen a popup window presents the four 
  97. options: 
  98.  
  99.      Create/Display color mask
  100.      Select color mask
  101.      Select palette 
  102.      QUIT 
  103.  
  104.     Clicking on the Create/Display color mask option allows the user to 
  105. create, edit and save color masks. 
  106.  
  107.     Clicking on the Color mask file name box allows you to type in a file 
  108. name. The file name must have the extension .MSK or you will not be able to 
  109. select it later. Ranges of dwell values should be typed into the squares on 
  110. the left. Just click on the square, type in a dwell value and <Enter>. The 
  111. colors are selected by clicking on the desired color of the color wheel in the 
  112. upper right and then clicking on the odd and even boxes at the right. The 
  113. selected color is displayed between the circular menu and the color wheel. If 
  114. the first line of the color mask reads: 
  115.  
  116.     0         9       [blue box]   [white box]
  117.  
  118. then dwell values from 0 to 9 will be colored blue if odd and white if even. 
  119. If a solid color is desired the color boxes should be filled with the same 
  120. color. The end of a color mask should be designated with a negative value 
  121. entered into the first dwell box.  The default color mask on startup is M1.MSK 
  122. and its values are: 
  123.  
  124.     Dwell Range     Odd color     Even color
  125. -----------------------------------------------
  126.     0     9         [blue box]    [white box]
  127.     10    19        [red box]     [red box]
  128.     20    510       [yellow box]  [yellow box]
  129.     511   511       [black box]   [black box]
  130.     -1
  131.  
  132.     In the case of M1.MSK, any dwell values larger than 511 will be colored 
  133. black (color 0 in the default palette). 
  134.  
  135.     The circular menu at upper left has four options. Clicking on the up or 
  136. down arrow jumps to the previous or next 16 color mask entries. A total of 256 
  137. entries can be placed in one color mask. The SAVE option stores the color mask 
  138. currently displayed under the name specified in the Color mask file name box. 
  139. The new color mask becomes the currently selected color mask. 
  140.  
  141.     Clicking on the Select color mask option presents the user with a large 
  142. window and the names of the color masks that have been stored. Clicking on a 
  143. color mask name will select and load that color mask. It then can be viewed by 
  144. selecting the Create/Display color mask option. 
  145.  
  146.     Clicking on the Select palette option opens a window that displays the 
  147. current VGA color palette of 16 colors. Clicking on the Default box will load 
  148. the default VGA color palette. Clicking on the arrows will select other 
  149. prestored color palettes, up to number 57. 
  150.  
  151.     The QUIT option returns the user to the main menu. 
  152.  
  153.     Make Image 
  154.  
  155.     Selecting the Make Image command generates a Mandelbrot or Julia image 
  156. based upon the parameters entered in the Set Values command. A warning is 
  157. issued before the generation begins to allow the user to change the file name, 
  158. as any existing file of this name will be erased. 
  159.  
  160.     A very simple way to generate images is first to use Load Image to display 
  161. a previously generated image. Double clicking on the image will produce a zoom 
  162. window overlaid on the display. Clicking and holding down the left mouse 
  163. button allows the zoom window to be dragged about the image to an interesting 
  164. portion of the image. The zoom window can be resized by dragging the mouse 
  165. pointer to the left and right outside the zoom window. Once the zoom window 
  166. has been positioned and sized, clicking on the gray panel at right will 
  167. automatically store the new zoomed values into the Set Values area. Be careful 
  168. not to drag the mouse cursor onto the gray panels while resizing. The user 
  169. will probably wish to enter a new image file name using the Set Values command 
  170. (this will prevent the original image file from being erased), and then 
  171. generate a new image of the area defined by the zoom window with the Make 
  172. Image command. While the zoom window is present the procedure can be cancelled 
  173. by clicking on the right gray panel around the command buttons. The zoom 
  174. window will only work on images 480 pixels wide, or less.
  175.  
  176.     Load Image 
  177.  
  178.     The Load Image command presents the user with a list of image file names 
  179. that have been produced with the .MAN extension. Clicking on a file name will 
  180. display the image with the current color mask if the selected image has no 
  181. default color mask file name. A brief double tone is sounded if there is no 
  182. default color mask file name. If a color mask name was included when the image 
  183. was generated, this color mask will be loaded before the image is displayed. 
  184. Partially generated images will automatically continue generation when 
  185. displayed with this command. Once an image is displayed double clicking on the 
  186. image will produce a zoom window as described under the Make Image command. 
  187.  
  188.     Make R Image 
  189.  
  190.     The Make R Image command functions similarly to the Make Image command 
  191. except a recursive procedure is used in place of the normal line by line 
  192. generation. The image file should be given the .MAR extension so that it will 
  193. be properly handled when using the Load R Image command. In some cases this 
  194. recursive procedure will generate images faster that the normal method. 
  195. Partially generated images cannot be displayed with generation automatically 
  196. continuing as is the case with the normal Load Image command. Image files are 
  197. generally larger with the recursive procedure. 
  198.  
  199.     Load R Image 
  200.  
  201.     The Load R Image command displays a recursive image previously generated 
  202. with a .MAR extension in the file name. A list of such files is presented and 
  203. the selected image is clicked on. Partially generated images will not be 
  204. automatically continued as with the Load Image command. 
  205.  
  206.     3-D Image 
  207.  
  208.     The 3-D Image command displays an image generated with the Make Image 
  209. command in a pseudo 3-D style. The display algorithm is a simple one, but very 
  210. slow. VGA displays have limitations when displaying 3-D Mandelbrot images. 
  211. Best results occur with color masks that contain multiple colors and have the 
  212. dwell ranges broken into many small steps. Large values for the maximum dwell 
  213. may result in the top of the image being lost. Partially generated images will 
  214. not be automatically continued as with the Load Image command. 
  215.  
  216.     Plot Dwell 
  217.  
  218.     The Plot Dwell command reads all the dwell values of an image stored with 
  219. the .MAN extension and sums them. The sums are then plotted with the current 
  220. color mask used for each dwell value plotted. Only dwell values of 2,400 or 
  221. less will be plotted. These plots give an indication of how many points in the 
  222. image have the various dwell values and can be useful in constructing a color 
  223. mask that will display the image to best advantage. 
  224.  
  225.     Make PCX   
  226.  
  227.     The Make PCX command allows the user to select an image file stored with 
  228. the .MAN extension and create a PCX image file. A 16 color PCX file using the 
  229. default VGA color palette can be chosen or several 256 color PCX formats are 
  230. available. Click on one of the small boxes to select what type of PCX file you 
  231. desire. The color sequence of each of the 256 color formats is displayed. The 
  232. first example has magenta blending into red for dwell values from 0 to 64, 
  233. from red to yellow for dwells from 64 to 128, etc. The PCX image file format 
  234. allows users to import Mandelbrot and Julia image files into other software 
  235. such as desktop publishing programs and paint programs. PCX files can also be 
  236. used for Windows wallpaper. 
  237.  
  238.     Print Image
  239.  
  240.     The Print Image command presents the user with nine different printer 
  241. types that are supported, or the command can be quit. 
  242.  
  243.     Epson 9 pin
  244.     Epson 24 pin
  245.     IBM 9 pin
  246.     IBM 24 pin
  247.     LaserJet
  248.     DeskJet 500 B/W
  249.     Epson DM Color
  250.     DeskJet 500 C
  251.     PaintJet
  252.     QUIT
  253.  
  254.     The 9 pin printers will output at 120x144 dpi, the 24 pin at 180x180 dpi, 
  255. the Laserjet, Deskjet 500 B/W and Color at 150x150 dpi and the Epson DM Color 
  256. and Paintjet at 90x90 dpi. Be patient, the print drivers do take time in 
  257. exchange for attractive output. Color is the slowest. Black and white images 
  258. will be dithered. QUIT returns the user to the main menu. 
  259.  
  260.     The Print Image command is basically for quick hardcopy. If you wish to 
  261. print museum quality prints try a DeskJet 500 series printer. Create your 
  262. image and then make a PCX file using one of the 256 color formats. Next, load 
  263. this PCX file into the Paintbrush program that comes with Windows. This is 
  264. usually found in the Accessories window. Next print the image from Paintbrush. 
  265. You will need a 256 color display to do this and the Windows print driver that 
  266. came with the DeskJet printer. Most IBM PC's and clones being sold today come 
  267. with a 256 color display. The DeskJet will print your image with a superb 
  268. color balance at just under 100 dpi. Try an image width of about 750 pixels to 
  269. fill out the 8-1/2 inch page. I've used this method with a Hewlett-Packard 
  270. DesignJet 650C and 36 inch wide paper with images 3300 pixels wide to produce 
  271. colored output that is truly magnificent. If your printer is not supported 
  272. this method can also be used to print your images. The only thing you will 
  273. need is the Windows print driver that came with your printer.
  274.  
  275.     Remember, images my be created which are much wider than your screen. The 
  276. upper left corner of your image will be the only area visible. To see the 
  277. entire image, create a 256 color PCX file and use any paint program that can 
  278. read 256 color images. These can be very attractive. 
  279.  
  280.     Help File       
  281.   
  282.     The Help File command displays the file you are currently reading. 
  283. Clicking on the arrows to the right displays the next or previous page. 
  284.  
  285.     Quit MAND54
  286.  
  287.     The Quit MAND54 command returns the user to the DOS prompt. 
  288.  
  289.                              Image File Structure
  290.  
  291.     Each image file created by the Mandelbrot/Julia Set Generator begins with 
  292. a 150 byte header. 
  293.  
  294. Byte  Item       Size           Description
  295. ------------------------------------------------------
  296. 0     x           8 byte double  x center point
  297. 8     y           8 byte double  y center point
  298. 16    mag         8 byte double  magnification
  299. 24    a           8 byte double  a for Julia sets
  300. 32    b           8 byte double  b for Julia sets
  301. 40    maxdwell    unsigned int   maximum dwell
  302. 42    width       unsigned int   image width in pixels
  303. 44    mj[2]       char           M/J, image type
  304. 46    partial[2]  char           F/P, full/partial
  305. 48    mask[32]    char           color mask file name
  306. 80    display     integer        display (not used)
  307. 82    pal         integer        palette (not used)
  308. 84    name[50]    char           signature
  309. 134   fill[16]    char           filler
  310.  
  311.     All char strings are terminated with a hexadecimal 00 byte. 
  312.  
  313.     The dwell data follows the header. It should be noted that this is not a 
  314. true image file, rather the dwell values themselves are stored. This allows 
  315. users to color the image with a large variety of color masks. Storing an image 
  316. file might be simpler but for every different color mask a new image file 
  317. would have to be created. 
  318.  
  319.     The dwell data is stored as a series of two byte unsigned integers. Each 
  320. unsigned integer contains the dwell value and a run length corresponding to a 
  321. string of identical dwell values. The number of bits required to hold the 
  322. maximum dwell is first obtained. If the maximum dwell is 511, then 9 bits are 
  323. required, 1023 would require 10 bits, etc. Using 1023 for the maximum dwell as 
  324. an example, the right most 10 bits of the 16 bit integer represents the dwell 
  325. value and the 6 left most bits contain the run length. As a run length of zero 
  326. is not very useful, this value is always incremented by one such that a run 
  327. length of zero equals 1, 1 is 2, etc. Given a maximum dwell of 1023 the 
  328. following 16 bit unsigned integer represents a dwell of 1000 and a run length 
  329. of 32. 
  330.  
  331.                                011111 1111101000
  332.                                    7FE8 hex
  333.  
  334.     When an image is being displayed and the unsigned integer above is read, a 
  335. line of 32 pixels will be drawn using the appropriate color from the active 
  336. color mask for dwell value 1000. 
  337.  
  338.     Each line of a display is encoded with no wraparound. This means that each 
  339. line will end with the display of an encoded unsigned integer and no extra 
  340. pixels of the same dwell will be added for the beginning of the next line even 
  341. if there is room in the run length. 
  342.  
  343.     It should be noted that the maximum run length that can be stored varies 
  344. with the maximum dwell chosen. Files with a maximum dwell of 1023 will have a 
  345. maximum run length of 64, those with maximum dwells of 8191 will only store 
  346. 16. This does not limit a run length because if it exceeds the space available 
  347. in a single unsigned integer it simply creates additional ones until the run 
  348. of dwells has been stored. For this reason images with high maximum dwell 
  349. values are often large in size. This method of file compression strikes a good 
  350. balance between file size and speed when displaying an image. 
  351.  
  352.                      The Mathematics of the Mandelbrot Set
  353.  
  354.     The Mandelbrot set is computed by operating on a fairly simple equation 
  355. that contains complex numbers of the form 
  356.  
  357.                           x + yi where  i = sqrt(-1)
  358.  
  359. The Mandelbrot equation is
  360.  
  361.                                  z <- z^2 + c
  362.  
  363. where
  364.  
  365.                            z = x + yi and c = a + bi
  366.  
  367. substituting these values into z^2 + c we have
  368.  
  369.                               (x + yi)^2 + a + bi
  370.  
  371.                            x^2 + 2xyi - y^2 + a + bi
  372.  
  373. separating the real and imaginary parts of z gives
  374.  
  375.                               x <- x^2 - y^2 + a
  376.  
  377.                                  y <- 2xy + b
  378.  
  379.     To determine whether a point (a,b) in the complex plane is a member of the 
  380. Mandelbrot set, the real and imaginary parts of the equation are iterated. The 
  381. x and y values are first initialized to zero. The constants a and b, the point 
  382. in the plane, are then substituted into the equations giving 
  383.  
  384.                                x <- a and y <- b
  385.  
  386. for the first iteration.
  387.  
  388.     The two new values for x and y, along with the constants a and b, are now 
  389. substituted into the equations again. This procedure (iteration) continues 
  390. until the absolute value of x + yi > 2, ie. sqrt(x^2 + ^y2) > 2. For those 
  391. cases where this value never exceeds 2, the maximum number of iterations is 
  392. preset. A value of about 500 is usually adequate, although this value is 
  393. raised to several thousand when smaller details at high magnification are 
  394. examined. The number of times the equations are iterated before the value of 
  395. sqrt(x^2 + y^2) > 2 is called the dwell. Those initial points (a,b) where the 
  396. dwell is infinite, or for more practical purposes attains the preset maximum, 
  397. are members of the Mandelbrot set. Another way to describe this is to say that 
  398. for points within the Mandelbrot set, the sequence of points produced by this 
  399. iteration procedure is bounded inside a circle of radius 2, where points 
  400. outside the set are unbounded and continue to grow and escape the circle. 
  401.  
  402.     The Mandelbrot set exists entirely within the area defined by 
  403.  
  404.                         -2 <= a <= 2  and  -2 <= b <= 2
  405.  
  406. in the complex plane. A Mandelbrot image is produced by taking this area of 
  407. the complex plane and dividing it into a array of 1200 x 1200 points. Each one 
  408. of these points becomes the constant (a,b). The iteration procedure previously 
  409. described is used on each of the 1.44 million points, coloring each point in 
  410. the Mandelbrot set black and all others white. The algorithm is: 
  411.  
  412.     maxcount <- 1000
  413.     for b <- 2 to -2 stepdown 1/300
  414.     for a <- -2 to 2 step 1/300
  415.       x <- 0
  416.       y <- 0
  417.       count <- 0
  418.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  419.         x <- x^2 - y^2 + a
  420.         y <- 2*x*y + b
  421.         count <- count + 1
  422.       end while
  423.       if count = maxcount plot(a,b,BLACK)
  424.         else plot(a,b,WHITE)
  425.     end for a
  426.     end for b
  427.  
  428.     While the algorithm is not that complex, the amount of computation is 
  429. enormous. Depending on programming language and style, the inner loop has at 
  430. least four multiplications and a square root. For a point in the Mandelbrot 
  431. set this loop is executed 1000 times and there are over a million points to 
  432. check! It is not surprising that the Mandelbrot set was not discovered until 
  433. the age of computers. 
  434.  
  435.     In the Mandelbrot/Julia Set Generator program some additional refinements 
  436. are made to standardize the initial parameters used to generate a specific 
  437. image. Instead of defining the range of (a,b) values used for an area, a 
  438. center point and a magnification are specified. The center point is simply a 
  439. chosen (a,b) value. The length of a side which encloses the area of interest 
  440. is defined as 
  441.  
  442.                             side = 2/magnification
  443.  
  444. The following values can now be defined
  445.  
  446.                          a_minimum = a_center - side/2
  447.  
  448.                          b_maximum = b_center + side/2
  449.  
  450.                                gap = side/width
  451.  
  452. where width is defined as the number of points that make up a side (or on a 
  453. computer screen the number of pixels), and the gap being the distance between 
  454. each point. 
  455.  
  456.     The Mandelbrot set is an interesting image, a sort of cardioid with a 
  457. spiked head attached at the left. The boundary of the set sprouts self similar 
  458. buds of different sizes. Vastly more interesting images are forthcoming when 
  459. we examine the boundary of the Mandelbrot set under higher magnification. To 
  460. obtain higher magnifications we simply divide a smaller area into our array of 
  461. points. For example, the area defined by the center point (-0.77,0.17) and 
  462. magnification 20 is located in the upper valley between the head and the 
  463. cardioid shaped body. 
  464.  
  465.     If we continue with these magnifications, very different and interesting 
  466. images can be produced by coloring the dwell values in specific ways. Along 
  467. with coloring points in the Mandelbrot set black, we can assign different 
  468. colors to other points based upon their dwell value. For example, we might 
  469. assign yellow to dwell values in the range 400 to 499, red to 300 to 399, etc. 
  470. When we do this a great deal more detail begins to appear in the boundary 
  471. regions. This region of interest exists only in a narrow band just outside the 
  472. Mandelbrot set. The skill one uses in choosing the various colors for 
  473. differing dwell values is very important when attempting to produce an 
  474. attractive image. 
  475.  
  476.     The Mandelbrot/Julia Set Generator uses a file called a color mask to 
  477. store the colors used in painting the various dwell values in an image. This 
  478. technique allows many different coloring schemes for a single image. Consider 
  479. the following color mask: 
  480.  
  481.     Dwell Range    Odd Color   Even Color
  482. ----------------------------------------------
  483.     0     9        blue        white
  484.     10    19       red         red
  485.     20    510      yellow      yellow
  486.     511   511      black       black
  487.     -1
  488.  
  489.     Dwell values from 0 to 9 will be colored blue if they are odd numbers and 
  490. white if they are even. Values from 10 to 19 will be colored red, 20 to 510 
  491. yellow and 511 will be colored black. Choosing the maximum dwell value to be 
  492. in the set 2n - 1 maximizes the file compression method the Mandelbrot/Julia 
  493. Set Generator program uses. 
  494.  
  495.     Generating Julia set images is a similar process. The point (a,b) is 
  496. chosen from one of the interesting boundary areas of the Mandelbrot set. This 
  497. value is held constant and the (x,y) value is initialized to the various 
  498. points in the complex plane defined by 
  499.  
  500.                         -2 <= x <= 2  and  -2 <= y <= 2
  501.  
  502.     This would be a magnification of 0.5, actually the Julia image can often 
  503. be enlarged slightly to fill the screen and magnifications from 0.6 to 0.9 are 
  504. often used. 
  505.  
  506.     The algorithm for generating a Julia set is
  507.  
  508.     maxcount <- 1000
  509.     a <- constant
  510.     b <- constant
  511.     for y <- 2 to -2 stepdown 1/300
  512.     for x <- -2 to 2 step 1/300
  513.       count <- 00
  514.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  515.         x <- x^2 - y^2 + a
  516.         y <- 2*x*y + b
  517.         count <- count + 1
  518.       end while
  519.       if count = maxcount plot(a,b,BLACK)
  520.           else plot(a,b,WHITE)
  521.     end for x
  522.     end for y
  523.  
  524.                               Selected References
  525.  
  526. Barnsley, Michael, Fractals Everywhere. San Diego, CA: Academic Press, 1988. 
  527.  
  528. Briggs, John and Peat, F. David Turbulent Mirror. New York: Harper & Row, 
  529.     1989. 
  530.  
  531. Devaney, Robert L.Choas, Fractals, and Dynamics. Menlo Park, CA:Addison-
  532.     Wesley, 1990. 
  533.  
  534. Devaney, Robert L. and Keen, Linda, Editors. Chaos and Fractals, The 
  535.     Mathematics Behind the Computer Graphics: Proceedings of Symposia in 
  536.     Applied Mathematics.Providence, RI: American Mathematical Society, 1989. 
  537.  
  538. Gleick, James Chaos, Making a New Science. New York: Viking Penguin, Inc., 
  539.     1987. 
  540.  
  541. Mandelbrot, Benoit B. The Fractal Geometry of Nature. New York: W. H. Freeman 
  542.     and Co., 1983. 
  543.  
  544. Peitgen, Heinz-Otto and Richter, Peter H. The Beauty of Fractals, Images of 
  545.     Complex Dynamical Systems. Berlin: Springer-Verlag, 1986. 
  546.  
  547. Peitgen, Heinz-Otto and Saupe, Dietmar, Editors. The Science of Fractal 
  548.     Images. New York: Springer-Verlag, 1988. 
  549.  
  550. Pietgen, Heinz-Otto, Jurgens, Hartmut and Saupe, Dietmar Fractals for the 
  551.     Classroom, (Volumes I & II), New York: Springer-Verlag, 1992. (There is a 
  552.     single volume work entitled Chaos and Fractals, New Frontiers of Science, 
  553.     which is essentially the same work as the two volume set above.) 
  554.  
  555. Pickover, Clifford A. Computers Pattern Chaos and Beauty: Graphics from an 
  556.     Unseen World.New York: St. Martin's Press, 1990. 
  557.  
  558. Pickover, Clifford A. Computers and the Imagination: Visual Adventures Beyond 
  559.     the Edge. New York: St. Martin's Press, 1991. 
  560.  
  561. Pickover, Clifford A. Mazes for the Mind. New York: St. Martins Press, 1992. 
  562.  
  563. Schroeder, Manfred Fractals, Chaos, Power Laws, Minutes from an Infinite 
  564.     Paradise.New York: W.H. Freeman and Co., 1991. 
  565.  
  566. Stevens, Roger T. Fractal Programing in C. Redwood City, CA: M&T Publishing, 
  567.     Inc., 1989. 
  568.  
  569. Stevens, Roger T. Advanced Fractal Programing in C. Redwood City, CA: M&T 
  570.     Publishing, Inc., 1990. 
  571.  
  572. Stewart, Ian Does God Play Dice? The Mathematics of Chaos. Oxford: Basil 
  573.     Blackwell, 1989. 
  574.  
  575. Stewart, Ian and Golubitsky, Martin Fearful Symmetry, Is God a Geometer? 
  576.     Oxford: Blackwell, 1992. 
  577.  
  578.                                  Registration
  579.  
  580.     You may freely copy and distribute this shareware Version 5.4 of the 
  581. Mandelbrot/Julia Set Generator. Shareware users who find the Mandelbrot/Julia 
  582. Set Generator useful should support the author and register their copy. The 
  583. form found below should be used for registration. Registered users will 
  584. receive a copy of the newest version of the Mandelbrot/Julia Set Generator 
  585. with additional images and a printed manual. Registered users will also 
  586. receive support, by letter mail, e-mail or phone, for one year from the date 
  587. of registration. 
  588.  
  589.     The Mandelbrot/Julia Set Generator is a "shareware program" and is 
  590. provided at no charge to the user for evaluation. Vendors who distribute 
  591. shareware programs may charge a small fee for an evaluation copy. Feel free to 
  592. share this program with your friends, but please do not give it away altered 
  593. or as part of another system. The essence of "user-supported" software is to 
  594. provide personal computer users with quality software without high prices, and 
  595. yet to provide incentive for programmers to continue to develop new products.  
  596. If you find this program useful and find that you are using the 
  597. Mandelbrot/Julia Set Generator and continue to use the Mandelbrot/Julia Set 
  598. Generator after a reasonable trial period, you must make a registration 
  599. payment of $25. plus $2. shipping to Theron Wierenga. The registration fee 
  600. will license one copy for use on any one computer at any one time. You must 
  601. treat this registered software just like a book. An example is that this 
  602. registered software may be used by any number of people and may be freely moved 
  603. from one computer location to another, so long as there is no possibility of 
  604. it being used at one location while it's being used at another. Just as a book 
  605. cannot be read by two different persons at the same time. 
  606.  
  607.     The registration fee is $25. ($35. outside the United States.) Please 
  608. include $2.00 for shipping and handling. A complete listing of the program, 
  609. which is written in Borland C/C++, is also available for an additional $20.00. 
  610. All prices are in U.S. dollars. 
  611.  
  612.    Checks should be made out to:
  613.  
  614.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  615.  
  616.                               Ombudsman Statement
  617.  
  618.     This program is produced by a member of the Association of Shareware 
  619. Professionals (ASP). The ASP wants to make sure that the shareware principle 
  620. works for you. If you are unable to resolve a shareware-related problem with 
  621. an ASP member by contacting the member directly, ASP may be able to help. The 
  622. ASP Ombudsman can help you resolve a dispute or problem with an ASP member, 
  623. but does not provide technical support for members' products. Please write to 
  624. the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 USA, FAX 616-
  625. 788-2765 or send a CompuServe message via CompuServe Mail to ASP Ombudsman 
  626. 70007,3536. 
  627.  
  628.                                  User Support
  629.  
  630.     Registered users will receive support, by letter mail, e-mail or phone, 
  631. for one year from the date of registration on any problems they encounter. 
  632. Customer support and order phone 708-854-0489. The author is available by e-
  633. mail on the internet at mups_wiereng@wmich.edu. 
  634.  
  635.                                Registration Form
  636.                   Mandelbrot/Julia Set Generator, Version 5.4
  637.  
  638.  
  639.     Name____________________________________________________________
  640.  
  641.     Address_________________________________________________________
  642.              
  643.     City_______________________________________State_____Zip________
  644.  
  645.     Email address (if available)____________________________________
  646.  
  647.     Disk size desired:       5 1/4 in._______       3 1/2 in._______
  648.  
  649.     Registration fee . . . . . . . . . . . . . . . $25.00 __________
  650.     Registration fee (Outside the USA) . . . . . .  35.00 __________
  651.     Borland C/C++ program code . . . . . . . . . .  20.00 __________
  652.     Shipping . . . . . . . . . . . . . . . . . . .        ___2.00___
  653.  
  654.     Total enclosed . . . . . . . . . . . . . . . .        __________
  655.                     (All prices are in U.S. dollars.)
  656.  
  657.     Method of payment: Check or MO______ MasterCard______ Visa______
  658.  
  659.     Account number____________________________ Expir. date__________
  660.  
  661.     Signature (necessary)___________________________________________ 
  662.  
  663.     How did you receive your copy of this program?__________________
  664.  
  665.     ________________________________________________________________
  666.  
  667.     Suggested improvements__________________________________________
  668.  
  669.     ________________________________________________________________
  670.  
  671.     ________________________________________________________________
  672.  
  673.     ________________________________________________________________
  674.  
  675.  
  676.                 The Mandelbrot/Julia Set Generator, Version 5.4
  677.                            is a software product of
  678.                Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  679.                  Customer support and order phone 708-854-0489 
  680.                             mups_wiereng@wmich.edu
  681.  
  682.